<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
            数组的扁平化
                把多维数组转换为一维数组
        */

        // let arr1 = [[1, 2, 3], [4, 5, 6]] // 二维数组
        // 扁平 ---> [1,2,3,4,5,6]


        // let arr2 = [[[7, 8, 9], 1, 2, 3], [4, 5, 6]] // 三维数组
        // 扁平 ---> 7,8,9,1,2,3,4,5,6

        // let arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
        // // 思路： 遍历数组，如果数组里面的第n个，不是数组，就直接复制，如果是数组，继续遍历
        // let newArr = []


        // 推导 扁平化 的思路
        // for (let i = 0; i < arr.length; i++) {
        //     // if (arr[i].constructor === Array) {
        //     // if (arr[i].__proto__ === Array.prototype) {
        //     if (arr[i] instanceof Array) {
        //         // 再次遍历
        //         for (let j = 0; j < arr[i].length; j++) {
        //             if (arr[i][j]是数组) {
        //                 // 再次遍历
        //             }else {
        //                 newArr.push(arr[i][j])
        //             }
        //         }
        //     } else {
        //         newArr.push(arr[i])
        //     }
        // }


        // 使用递归来实现
        function bp(arr) {
            for (let i = 0; i < arr.length; i++) {
                if (arr[i] instanceof Array) {
                    // 如果是数组， 遍历
                    bp(arr[i])
                } else {
                    newArr.push(arr[i])
                }
            }
        }
        let arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
        // 思路： 遍历数组，如果数组里面的第n个，不是数组，就直接复制，如果是数组，继续遍历
        let newArr = []
        bp(arr)
        console.log(newArr);
        // 作业： 还要把newArr去重
    </script>
</body>

</html>